GAC125 - Introdução à Programação Orientada a Objetos
DAC - ICET - Universidade Federal de Lavras
24/08/2023
Uma dica fundamental é:
O conteúdo é totalmente atrelado à prática usando o BlueJ.
Não adianta ler os slides, ou ficar apenas assistindo à videoaula.
É necessário usar o BlueJ e praticar você mesmo!
Se ainda não instalou o BlueJ em seu computador, a hora é agora!
Além disso, estes slides se baseiam no Cap. 1 do livro do Barnes e Kölling.
Dica: faça anotações!
Em qualquer dos casos, é altamente recomendável, ter um caderno e caneta para anotar os principais conceitos e eventuais dúvidas que surgirem.
Vamos começar nossa jornada no mundo da Programação Orientada a Objetos (PPOO)!
Começaremos pelos conceitos mais importantes que são a base de tudo: Objetos e Classes
Como você descreveria essa cena para alguém não a está vendo?
Provavelmente listando os objetos que nela se encontram.
E o que essas imagens têm em comum?
Elas são objetos!
Ao criar um programa em uma linguagem Orientada a Objetos (OO)
Os objetos que criamos dependem do problema que estamos resolvendo
Os objetos podem ser coisas mais concretas, como jogadores em um jogo de futebol.
Conceito
Objetos Java modelam objetos do domínio de um problema.
Uma classe descreve, de forma abstrata, todos os objetos de um tipo específico.
Para ficar mais claro, vamos pensar em um exemplo: uma simulação de trânsito.
Para nos ajudar a decidir, vamos pensar em algumas perguntas?
Não dá para responder sem especificar de qual carro estamos falando.
Agora, se eu digo: “meu carro velho está parado no estacionamento”.
Portanto, agora estou falando de um objeto carro, pois é um exemplo de um carro em particular.
Uma classe pode ser vista como o projeto de um carro:
Em uma fábrica de automóveis, por exemplo:
Nesse exemplo o projeto seria a classe, e os carros os objetos.
Uma classe pode ser vista como a planta de uma casa:
Em um conjunto habitacional:
Nesse exemplo a planta seria a classe, e as casas os objetos.
Pode realmente acontecer de nosso programa ter apenas um objeto de uma determinada classe.
Costumamos dizer que um objeto particular é uma instância de uma classe.
Conceito
Objetos são criados a partir de classes. A classe descreve o tipo do objeto; e os objetos representam instâncias individuais da classe.
Baixe o projeto de exemplo figuras e abra-o no BlueJ.
Como baixar o projeto?
Os projetos da disciplina são disponibilizados no GitHub. Se nunca o utilizou, não se preocupe.
Code.Download ZIP.package.bluej.Ao abrir o projeto verá um diagrama.
Você verá um retângulo na parte inferior do BlueJ, chamado “circulo1”.
Acabamos de criar nosso primeiro objeto.
Convenção
Começamos os nomes de classes com letras maiúsculas e os nomes de objetos com letras minúsculas. Isso ajuda a identificar do que estamos falando.
Exercício
Agora é com você: experimente criar outro círculo e um quadrado.
Clique com o botão direito no objeto círculo (não na classe!) e você verá um menu com várias opções.
Escolha a opção exibir no menu - Isso vai desenhar uma representação do círculo em uma janela separada
Veja que existem várias opções no menu do círculo.
Exercício
O que acontece se você chamar moverBaixo duas vezes? Ou três vezes? O que acontece se chamar esconder duas vezes?
As opções do menu círculo representam operações que você pode usar para manipular o círculo
Conceito
Podemos nos comunicar com objetos através da chamada de seus métodos. Geralmente os objetos fazem alguma coisa quando chamamos um método.
Nós podemos entender métodos também como comportamentos, ou mensagens que podem ser enviadas para os objetos.
Em um jogo de futebol, por exemplo, quais são os comportamentos que um jogador pode ter?
Alguns exemplos são: chutar, dar passe e correr.
chutar, darPasse e correr.Já fazerGol seria um método válido para um objeto jogador? - Veja que o comportamento do jogador no jogo é chutar a bola. Fazer gol é uma consequência que pode acontecer ou não.
Vamos agora chamar o método moverHorizontal
Digite 50 e clique em OK.
O método que usamos precisa de informação adicional para ser executado.
Conceito
Métodos podem ter parâmetros para fornecer informação adicional para uma tarefa.
Exercício
Tente chamar os métodos moverVertical, moverVerticalLento e mudarTamanho antes de continuar lendo. Descubra como o método moverHorizontal pode ser usado para movimentar o círculo 70 pixels para a esquerda.
As informações adicionais que alguns métodos precisam para executar são chamadas parâmetros.
Ao chamar o método moverHorizontal vemos na caixa de diálogo o seguinte:
Isso é o que chamamos de assinatura do método.
Conceito
O nome do método e os tipos dos seus parâmetros são chamados de assinatura. Ela tem todas as informações necessárias para chamar o método.
Quais poderiam ser os parâmetros de um método chutar de um objeto jogador em um jogo de futebol?
Os parâmetros poderiam ser, por exemplo, a direção e a força do chute.
Um tipo indica quais tipos de dados podem ser passados para um parâmetro.
int).A maior parte dos métodos do projeto figuras que espera parâmetros, são parâmetros inteiros.
circulo1), os métodos são listados já mostrando os parâmetros que eles esperam.Conceito
Parâmetros têm tipos. O tipo define quais tipos de valores um parâmetro pode receber
Veja que o método mudarCor espera um parâmetro do tipo String (texto).
"vermelha").Veja que quando clicamos em um método no BlueJ, a caixa de diálogo mostra também um texto de comentário antes da assinatura do método.
Exercício
Chame o método mudarCor para um dos seus círculos e use a string “vermelha”. Tente também outras cores.
Exercício
Experimente o que acontece quando você tenta usar uma cor que não existe.
Exercício
Tente chamar o método mudarCor e passar uma cor como parâmetro, mas sem as aspas. O que acontece?
A partir de uma classe, você pode criar vários objetos (ou instâncias).
Exercício
Crie vários objetos círculos, usando a opção new Circulo() no menu da classe Circulo. Faça um grande e amarelo e outro pequeno e verde. Experimente também criar alguns triângulos, quadrados e pessoas, mudando suas posições, tamanhos e cores.
Cada um desses objetos tem sua própria posição, cor e tamanho.
Conceito
Múltiplas instâncias: muitos objetos similares podem ser criados a partir de uma única classe.
Ao fazer o último exercício você deve ter notado que o método mudarTamanho da classe Triangulo tem a seguinte assinatura.
Portanto, esse é um exemplo de um método com mais de um parâmetro.
Nós chamamos de estado de um objeto, o conjunto dos valores de todos os seus atributos.
Podemos ver o estado de um objeto no BlueJ através da opção Inspecionar do menu de um objeto.
Exercício
Crie vários objetos de uma mesma classe e inspecione o estado de cada um. Com o inspetor de objetos aberto, mude o estado de um objeto (chamando o método moverEsquerda, por exemplo). Você verá os valores sendo modificados no inspetor de objetos.
No exercício vimos que alguns métodos, quando chamados, podem alterar o estado de um objeto.
Inspecionando objetos diferentes, você deve ter notado que objetos da mesma classe tem todos os mesmos atributos.
Já objetos de classes diferentes podem ter atributos diferentes.
Mas por que será que isso acontece?
A classe Circulo, por exemplo, define que um objeto círculo terá cinco atributos chamados:
A classe também define os tipos de cada atributo: os primeiros são int, a cor é do tipo String e o último é boolean (verdadeiro ou falso).
Assim, quando um objeto da classe Círculo for criado, o objeto terá esses atributos.
A mesma ideia vale para os métodos.
Mas, repare que os métodos são chamados nos objetos.
Exercício
Escolha uma das imagens abaixo e tente criar uma imagem parecida usando as formas do projeto figuras. Mas seja criativo e utilize cores, posições e tamanhos diferentes. Ao fazer isso, anote o que você teve que fazer para conseguir. Seria possível fazer de formas diferentes?
Entrega no Campus Virtual
Tire um print da imagem que você criou no exercício anterior. Você precisará desse print para as atividades de entrega dessa aula!
Vamos reforçar os conceitos que aprendemos usando agora um outro exemplo.
Exercício
Crie um objeto da classe Estudante. Veja que agora você precisa fornecer não só o nome do objeto, mas também alguns outros parâmetros.
Exercício
Crie alguns objetos da classe Estudante. Chame o método obterNome de cada objeto. Explique o que está acontecendo.
O método obterNome da classe Estudante tem algo diferente:
A palavra String antes do nome do método indica que ele retorna um valor string (texto).
Portanto, podemos obter informações de um objeto através de uma chamada de método.
Conceito
Métodos podem retornar informação sobre o objeto através de um valor de retorno
Vamos agora criar um objeto da classe Disciplina no projeto disciplina, chamado poo.
Exercício
Crie três estudantes e matricule-os na disciplina poo. Em seguida, chame o método exibirLista do objeto poo.
Fazendo o exercício podemos perceber que objetos podem ser passados como parâmetros de métodos de outros objetos.
As aulas teóricas da disciplina GAC125 - Introdução à Programação Orientada a Objetos são no formato ANP (Atividade Não-Presencial).
Para que você tenha a presença considerada para essa aula, você precisa demonstrar que realmente estudou o conteúdo. Para essa aula, faça os itens a seguir.
Entregas no Campus Virtual
Responda ao quiz de perguntas teóricas disponibilizado no Campus Virtual.
Envie o print que tirou no exercício da seção 1.8.
Envie também o print da tela que aparece no último passo do exercício abaixo.
Exercício
Usando o projeto disciplina, crie um objeto para representar a nossa disciplina.